<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .login-header{
            height: 30px;
            line-height: 30px;
            font-size: 24px;
            text-align: center;
            padding: 10px 0;
        }
        #link{
            text-decoration: none;
            color: black;
        }
        .login{
            display: none;
            width: 512px;
            height: 280px;
            position: fixed;
            z-index: 9999;
            top: 50%;
            left: 50%;
            /* 位置使用固定定位 在屏幕的中心 是top的50% left的50% */
            border: 1px solid #ebebeb;
            background-color: #fff;
            box-shadow: 0px 0px 20px #ddd;
            transform: translate(-50%,-50%);
            /* 使用translate平移在水平和垂直上半个盒子的距离使得盒子放在屏幕中心 */
        }
        .login-title{
            position: relative;
            width: 100%;
            height: 40px;
            line-height: 40px;
            text-align: center;
            font-size: 18px;
            margin: 10px 0 0 0;
            cursor: move;
            /*  */
        }
        .login-title span{
            position: absolute;
            top: -30px;
            right: -20px;
            width: 40px;
            height: 40px;
            border-radius: 20px;
            background-color: #fff;
            border: 1px solid #ebebeb;      
            font-size: 12px;   
        }
        #closeBtn{
            text-decoration: none;
            color: black;
        }
        .login-input-content{
           margin-top: 20px; 
        }
        .login-input{
            margin-bottom: 20px;
            /* overflow: hidden; */
        }
        .login-input label{
            width: 90px;
            float: left;
            margin-right: 10px;
            height: 35px;
            line-height: 35px;
            font-size: 14px;
            text-align: right;
            /* border: 1px solid black; */
        }
        .login-input input{
            /* float: left; */
            width: 350px;
            height: 35px;
            line-height: 35px;
            border: 1px solid #ebebeb;
            text-indent: 5px;
        }
        .login-button{
            width: 50%;
            margin: 30px auto;
            line-height: 40px;
            font-size: 14px;
            border: 1px solid #ebebeb;
            text-align: center;
        }
        .login-button a{
            text-decoration: none;
            color: black;
        }
        .login-bg{
            display: none;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, .3);
            position: fixed;
            top: 0;
            left: 0;
        }

    </style>
</head>
<body>
    <div class="login-header"><a id="link" href="javascript:;">点击，弹出登录框</a></div>
    <div class="login">
        <div id="title" class="login-title">登录会员
            <span><a id="closeBtn" href="javascript:;">关闭</a></span>
        </div>
        <div class="login-input-content">
            <div class="login-input">
                <label>用户名：</label>
                <input type="text" placeholder="请输入用户名">
            </div>
            <div class="login-input">
                <label>登录密码：</label>
                <input type="text" placeholder="请输入登录密码">
            </div>
        </div>
        <div class="login-button">
            <a href="javascript:void(0);">登录会员</a>
        </div>
    </div>
      <!-- 遮盖层 -->
    <div class="login-bg"></div>
<script>
    // ① 点击弹出层， 模态框和遮挡层就会显示出来 display:block;
    // ② 点击关闭按钮，模态框和遮挡层就会隐藏起来 display:none;
    // ③ 在页面中拖拽的原理： 鼠标按下并且移动， 之后松开鼠标
    // ④ 触发事件是鼠标按下 mousedown， 鼠标移动mousemove 鼠标松开 mouseup
    // ⑤ 拖拽过程: 鼠标移动过程中，获得最新的值赋值给模态框的left和top值， 这样模态框可以跟着鼠标走了
    // ⑥ 鼠标按下触发的事件源是 最上面一行，就是 id 为 title 
    // ⑦ 鼠标的坐标 减去 鼠标在盒子内的坐标， 才是模态框真正的位置。
    // ⑧ 鼠标按下，我们要得到鼠标在盒子的坐标。
    // ⑨ 鼠标移动，就让模态框的坐标 设置为 ： 鼠标坐标 减去盒子坐标即可，注意移动事件写到按下事件里面。
    // ⑩ 鼠标松开，就停止拖拽，就是可以让鼠标移动事件解除
    // 1. 获取元素
    var login = document.querySelector('.login');
    var mask = document.querySelector('.login-bg');
    var link = document.querySelector('#link');
    var closeBtn = document.querySelector('#closeBtn');
    var title = document.querySelector('#title')
     // 2. 点击弹出层这个链接 link  让mask 和login 显示出来
    link.addEventListener('click',function(){
        login.style.display = 'block';
        mask.style.display = 'block';
    })
    // 3. 点击 closeBtn 就隐藏 mask 和 login 
    closeBtn.addEventListener('click',function(){
        login.style.display = 'none';
        mask.style.display = 'none';
    })
    // 4. 开始拖拽
    // (1) 当我们鼠标按下， 就获得鼠标在盒子内的坐标
    title.addEventListener('mousedown',function(e){
        var x = e.pageX - login.offsetLeft;
        var y = e.pageY - login.offsetTop;
         // (2) 鼠标移动的时候，把鼠标在页面中的坐标，减去 鼠标在盒子内的坐标就是模态框的left和top值
         document.addEventListener('mousemove',move)
         function move(e){
            login.style.left = e.pageX - x + 'px';
            login.style.top = e.pageY - y + 'px';
         }
         // (3) 鼠标弹起，就让鼠标移动事件移除
         document.addEventListener('mouseup',function(){
            document.removeEventListener('mousemove',move);
         })
    })



</script>

</body>
</html>